<?php

function getFileInDirectory($dir_path) {
    $arr = array();
    if ($handle = opendir($dir_path)) {

        while (false !== ($filename = readdir($handle))) {
            $ext = substr($filename, strrpos($filename, '.') + 1);

            if ((($ext == "jpg") || ($ext == "JPG") || ($ext == "png") || ($ext == "PNG") || ($ext == "gif") || ($ext == "GIF"))
            ) {
                $arr[] = $filename;
            }
        }
        while ($filename = readdir($handle)) {
            $arr[] = $filename;
        }

        closedir($handle);
    }
    return $arr;
}

function catchuoi($chuoi, $gioihan) {
    // nếu độ dài chuỗi nhỏ hơn hay bằng vị trí cắt
    // thì không thay đổi chuỗi ban đầu
    if (strlen($chuoi) <= $gioihan) {
        return $chuoi;
    } else {
        /*
          so sánh vị trí cắt
          với kí tự khoảng trắng đầu tiên trong chuỗi ban đầu tính từ vị trí cắt
          nếu vị trí khoảng trắng lớn hơn
          thì cắt chuỗi tại vị trí khoảng trắng đó
         */
        if (strpos($chuoi, " ", $gioihan) > $gioihan) {
            $new_gioihan = strpos($chuoi, " ", $gioihan);
            $new_chuoi = substr($chuoi, $new_gioihan) . "...";
            return $new_chuoi;
        }
        // trường hợp còn lại không ảnh hưởng tới kết quả
        $new_chuoi = substr($chuoi, $gioihan) . "...";
        return $new_chuoi;
    }
}

function cat_chuoi($str, $len) {
    $s = self::utf8_substr($str, 0, $len);
    $l = strlen($s);
    if ($l <= 0)
        return $s."...";
    if ($l >= strlen($str))
        return $s."..."; // end of string
    if ($str{$l} == ' ' || $str{$l - 1} == ' ')
        return trim($s."..."); // end of word
        
// find the previous space ' '
    while ($s{$l - 1} != ' ') {
        if ($l <= 0)
            return ''; // to the first of string
        $s = substr($str, 0, $l - 1);
        $l = strlen($s);
    }
    return trim($s."...");
}

class Util {

    /**
     * UTF-8 substr
     *
     * @param string $str
     * @param int $from
     * @param int $len
     * @return string
     * call Utilities::utf8_substr($str,$from,$len);
     */
    static function utf8_substr($str, $from, $len) {
        return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,' . $from . '}' .
                '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,' . $len . '}).*#s', '$1', $str);
    }

    /**
     * get substr by word
     *
     * @param string $str
     * @param int $len
     */
    static function substr($str, $len) {
        $s = self::utf8_substr($str, 0, $len);
        $l = strlen($s);
        if ($l <= 0)
            return $s;
        if ($l >= strlen($str))
            return $s; // end of string
        if ($str{$l} == ' ' || $str{$l - 1} == ' ')
            return trim($s."..."); // end of word
            
// find the previous space ' '
        while ($s{$l - 1} != ' ') {
            if ($l <= 0)
                return ''; // to the first of string
            $s = substr($str, 0, $l - 1);
            $l = strlen($s);
        }
        return trim($s."...");
    }

}

?>
